/**
 * 点击播放按钮后,第一音乐播放,第二,重置所有play按钮,这个设为播放图片 开始音乐播放
 * 音乐播放时,第一,更新播放时间和持续时间, 第二,进度条的加载 
 * 音乐结束后,第一,根据循环规则播放歌曲 第二,同时动态调整li后面那些按钮的样式 匹配到li中的id与之相同的就将其子元素设置为XXX
 */
$(function(){
	var mymusic = document.getElementById("mymusic"),  //拿到播放器的id
		eindex = 0 ,          //记录歌曲出错时的请求次数
		pIndex = 0,          //默认播放的索引
		pid = 0,             //点击播放时的id,用于判断在播放时能否添加到播放列表中
		status = 0 ,         //默认播放顺序
		playList = [],      //用来存歌曲的id
		objWin,             //用于判断浏览器是否打开
		mmid = 0,            //准备播放的mid
		mIndex = 0,          //正在播放的歌的相对索引
		murl = "",           //当前正在播放的路径
		/*设置播放规则的图片数组    排序规则 0 顺序播放 1 单曲循环 2 列表循环 3 随机播放*/
		imgs = ['images/shunxu.png','images/danqu.png','images/xunhuan.png','images/random.png'],
		titles = ['顺序播放','单曲循环','列表循环','随机播放']; //对应的提示
		duration = 0,        //歌曲播放时长
		musicInfo = "";      //需要重新请求的歌曲信息

    //播放按钮单击的时候触发,只控制音乐播放和暂停,其他的交给play和pause事件去处理
	$("#bottom_img img").click(function(){
		var data = $(this).attr("data-content");
		if(data.match("prev")){
			pIndex = Math.max(0,--pIndex);
			$.getJSON("MusicControl.html","mid="+playList[pIndex],sendData);  //将这首歌的id作为数据发送请求
		}else if(data.match("next")){
			pIndex = Math.min(playList.length-1,++pIndex);
			$.getJSON("MusicControl.html","mid="+playList[pIndex],sendData);
		}else if(data.match("play")){
			var src = $(this).attr('src');
			//如果是播放图片,就让他播放,图片设置暂停图片
			if(src.match('play')){
				mymusic.play();
			}else{
				mymusic.pause();   //反之,如果是暂停图片就设置为播放图片,同时暂停音乐
			}
		}
	})
	
	/*声音的开关*/
	$("#voice").click(function(){
		var src = $(this).attr('src');
		if(src.match('voiceon')){
			$(this).attr('src','images/voiceoff.png');
			mymusic.volume = 0;
		}else if(src.match('voiceoff')){
			$(this).attr('src','images/voiceon.png');
			setVolume();
		}
	})
	
	/*设置声音*/
	function setVolume(){
		var bwidth = $(".bgd").width();
		    dwidth = $(".scroll").width();
		    rate = ( bwidth/dwidth).toFixed(2); //取两位小数来设置声音
		    mymusic.volume = rate;
	}
	
	/*声音控制部分*/
	$(".scroll").click(function(e){
		var e = e || window.event,
			w = e.offsetX;
			$(".bgd").width(w);
			setVolume();
	})	
	
	/*切换播放循环顺序*/
	$("#bottom_right .xunhuan").click(function(){
		status++;    //0 1 2 3 0...
		if(status==4){
			status = 0;
		}
		$(this).children('img').attr({'src':imgs[status],'title':titles[status]});
	})
	
	//单击按钮改变时间时
	$("#playContent").click(function(e){
		var e = e || window.event,
			w = e.offsetX,
			width = document.getElementById('playContent').clientWidth;
		$("#playContent .bg").width(w);  //设置宽度,重置播放时间
		mymusic.currentTime = Math.floor(w/width*duration);
	})

	/*单击遮罩层部分播放添加收藏等按钮执行的相对应的方法*/
	$(".imgs").on('click','div[class="mymask"]',function(e){
		var e= e || window.event,
			target = e.target || e.srcElement,
			li = $(this).parent().parent(),   //拿到li元素
			murl = $(li).attr("id"),
			mid = $(li).attr("data-content");  //确定现在在播放的mid

		if(target.src.match("play")){
			mmid = $(li).attr("data-content");
			mymusic.src= murl;
			mymusic.play(); 
			mIndex = $(".imgs li").index(li); //拿到li在其中的索引,也可以说是音乐的路径
			$("#musicname").html($(li).children("a").html()+"-"+$(li).children("p").html());
			/*拼下来请求信息  歌曲名+歌手的形式  供请求失败时调用*/ 
			musicInfo = $(li).children("a").html()+$(li).children("p").html();
		}else if(target.src.match("add")){
			var str = mid+"";
			if($.inArray(str,playList)==-1){
				playList.push(str);
			}
		}else if(target.src.match("collection")){
			/*点击收藏时先判断用户有没有登录,没有登录需要先登录,登录了就直接发送ajax请求添加到对应的用户中*/
			var user = $("#Marking").val();
			if(user == null || user == ""){
				$("#myform").show();
			}else{
				console.log("开始发送请求!",mid,$.cookie("uid"));
				//发送ajax到请求收藏页面
				$.get("Collection.html","opr=add&uid="+$.cookie("uid")+"&mid="+mid,collection,"text");
			}
		}else if(target.src.match("pause")){
			mymusic.pause(); 
		}
	})

	/*收藏成功后返回的数据*/
	function collection(data){
		if(data == 1){
			
		}
	}
	
	//根据murl来拿到对应的歌曲信息,再通过返回的mid来判断要不要添加到playList中
	function addList(data){
		if(data!=null){
			//如果音乐列表中没有这个id,也添加进去
			var str = data.mid + "";
			if($.inArray(str,playList) == -1){
				playList.push(str);
			}
		}
	}

	//音乐播放成功时候需要做的事
	mymusic.addEventListener('play',function(){
		eindex = 0,      //将记录的请求次数重置为0
		murl = this.src;
		$.getJSON("MusicControl.html","murl="+murl,addList);
		$(".imgs li").eq(mIndex).find('.play').attr('src','images/pause.png');
		$(".imgs li").eq(mIndex).siblings('li').find('.play').attr('src','images/play.png');
		$(".myplay").attr('src','images/pause.png');
	});

	//音乐暂停需要做的事
	mymusic.addEventListener('pause',function(){
		$(".imgs li").eq(mIndex).find('.play').attr('src','images/play.png');
		$(".myplay").attr('src','images/play.png');	
	});

	//如果请求有误,就重新发送一个ajax请求数据到后台服务器中去处理
	mymusic.addEventListener('error',function(){
		eindex++;
		if(eindex<=3){
			$.post("AddMusic.html",musicInfo==""?"mname=mainkaunhoonm":"mname="+musicInfo,reload,"json");
		}else{  //如果请求3次都失败
			$("#musicname").html('<p class="loading">正在连接歌曲中<span>...</span></p>');
			setTimeout(function(){
				$.post("AddMusic.html","mname=mainkaunhoonm",reload,"json");
			},3000);   //3秒后再请求其他歌曲
		}
	},false)

	/*请求成功后重新加载数据*/
	function reload(data){
		for(var key in data){
			/*拿到对应的路径开始播放*/
			mymusic.src = data[key].murl;
			mymusic.play();
			/*更新对应的li的路径*/
			$("#musicname").html(data[key].mname+"-"+data[key].sname);
			$(".imgs li").eq(mIndex).attr('id',data[key].murl);
			/*同时发送更新歌曲路径的请求*/
			var dl = data[key].murl.replace(new RegExp("&","g"),"abc123");
			$.get("UpdateMusic","mid="+mmid+"&murl="+dl);
			break;
		}
	}

	/*请求成功并播放的时候*/
	mymusic.addEventListener('timeupdate',function(){
		var width = document.getElementById('playContent').clientWidth;
		var curTime = this.currentTime;
		/*给外层部分边框增加动画效果*/
		$("#playContent .bg").animate({
			"width":Math.floor(curTime/duration*width)+'px'
		},30);
		$(".currentTime").html(getDura(curTime));
	});

	/*播放结束后的事件*/
	mymusic.addEventListener('ended',function(){
		$(".myplay").attr('src','images/play.png');
		$("#playContent .bg").width(0);  //宽度设为0
		orderPlay();  //调用根据顺序播放音乐的方法
	});

	//根据顺序播放音乐
	function orderPlay(){
		switch(status){
		//顺序播放的时候 放到最后一首就放
		case 0:
			if(pIndex+1>=playList.length){return;}
			pIndex++;  //否则index+1 将路径设为对应的	
			$.getJSON("MusicControl.html","mid="+playList[pIndex],sendData);
			break;   
		case 1:mymusic.play();break;	  //单曲循环的时候
		//列表循环的时候 跟顺序播放区别是 到了最后一首以后就将他设为0,可以继续播放
		case 2:
			pIndex++;
			if(pIndex>=playList.length){pIndex=0;}
			$.getJSON("MusicControl.html","mid="+playList[pIndex],sendData);
			break;   
		//随机播放的时候 产生一个数组大小长度的随机数,向下取整后拿来作为播放的索引
		case 3:
			var num = Math.floor(Math.random(playList.length));
			pIndex = num;   //当前播放歌曲的索引
			$.getJSON("MusicControl.html","mid="+playList[pIndex],sendData);
			break;   
		}
	}
	
	/*拿到数据后的回调函数*/
	function sendData(data){
		musicInfo =data.mname+""+data.sname ;
		mymusic.src = data.murl;
		mymusic.play();
		$("#musicname").html(data.mname+"-"+data.sname);
	}

	/*增加播放时长改变事件*/
	mymusic.addEventListener('durationchange',function(){
		duration = mymusic.duration;
		durStr = getDura(duration);
		$(".playTime").html(durStr);
	});

	//格式化时间
	function getDura(duration){ 
		var minute = Math.floor(duration/60),    //获取分
		minute = minute <10?"0"+minute:minute,
				second = Math.floor(duration%60),    //获取秒
				second = second<10?"0"+second:second;
		return minute+":"+second;
	};
})